Synchronisation bidirectionnelle des fichiers avec Unison sur Linux

Original tutorial « How To Synchronize Files With Unison On Linux » written by sk

Ce didacticiel vous expliquera comment installer l'outil de synchronisation de fichiers Unison sur Linux et comment synchroniser des fichiers avec Unison entre deux répertoires et / ou disques différents sur le même système et deux machines Linux différentes sur le réseau local.

Introduction à Unison

Unison est un outil de synchronisation de fichiers gratuit, open source, multi-plateforme et bidirectionnel. Il est utilisé pour stocker deux répliques de fichiers et de répertoires sur deux systèmes différents ou des disques différents sur le même système. Les répliques de fichiers et de répertoires sont modifiées séparément, puis mises à jour en propageant les modifications de chaque réplique à l'autre. Pour faire simple, toutes les modifications apportées à un emplacement seront répliquées vers un autre emplacement et vice versa.

Puisqu'il s'agit d'une application multi-plateforme, vous pouvez synchroniser des fichiers et des répertoires entre des ordinateurs qui s'exécutent avec différents systèmes d'exploitation. Par exemple, vous pouvez synchroniser des fichiers stockés dans une machine Linux avec une machine Windows ou Unix et vice versa. Pas seulement le contenu du fichier, même la propriété du fichier et les autorisations seront également synchronisées.

Si le contenu est différent sur les deux répliques, cela provoque un conflit. Unison détectera et affichera de tels conflits. Dans ce cas, vous devez indiquer à Unison quelle réplique doit remplacer l'autre. Les mises à jour qui ne sont pas en conflit seront propagées automatiquement.

Unison fonctionne bien avec n'importe quelle paire d'ordinateurs connectés à un réseau local ou à Internet. Les fichiers sont synchronisés avec un système distant via une  connexion ssh cryptée

Une autre caractéristique notable d'Unison est qu'il fonctionne bien sur des liaisons lentes telles que les connexions PPP. Similaire à rsync , Unison ne transférera que les parties d'un fichier qui ont été modifiées. L'implémentation intégrée de l'algorithme rsync par Unison accélère le transfert des mises à jour vers les fichiers existants. 

Unison est un programme de niveau utilisateur, il n'est donc pas nécessaire de modifier le noyau ou d'avoir des privilèges de superutilisateur sur l'un ou l'autre hôte.

Le programme Unison est créé par Benjamin C. Pierce et est publié sous licence GPL. Il fonctionne sous les plates-formes GNU / Linux, Windows et Unix.

Installez Unison sur Linux

Unison est disponible dans les référentiels par défaut des référentiels officiels de nombreux systèmes d'exploitation Linux.

Pour installer Unison sur Arch Linux et ses variantes, exécutez:

$ sudo pacman -S unison

Debian, Ubuntu, Linux Mint:

$ sudo apt install unison

Feutre:

$ sudo dnf install unison

CentOS 7:

Tout d'abord, activez le référentiel [EPEL] :

$ sudo yum install epel-release

Et puis installez l'unisson:

$ sudo yum install unison

openSUSE:

$ sudo zypper install unison

Une interface graphique simple nommée unison-gtk est également disponible pour ceux qui préfèrent l'interface graphique à la CLI. Il est disponible dans les référentiels par défaut de quelques distributions Linux.

Sur Arch Linux et ses variantes, installez Unison-gtk à l'aide de la commande:

$ sudo pacman -S unison-gtk2

Si vous utilisez un système basé sur Debian, installez-le à l'aide de la commande suivante:

$ sudo apt install unison-gtk

Veuillez noter que si vous souhaitez synchroniser des fichiers entre deux systèmes différents, vous devez installer Unison sur tous les systèmes que vous souhaitez synchroniser. De plus, la même version sur les deux systèmes est recommandée.

Synchroniser les fichiers avec Unison sous Linux

Nous pouvons utiliser Unison dans les trois modes suivants:

  1. 1.Synchroniser les fichiers stockés dans différents répertoires sur la même machine, 

  2. 2.Synchroniser les fichiers et répertoires stockés sur différents disques sur la même machine, 

  3. 3.Synchronisez les fichiers et répertoires entre les machines locales et distantes: 

1. Synchronisez les fichiers stockés dans différents répertoires sur la même machine

Aux fins de ce guide, je vais créer deux répertoires racine (c'est-à-dire des répliques) à savoir directory1et directory2.

$ mkdir ~/directory1

$ mkdir ~/directory2

Mettez du contenu sur l'un des répertoires ci-dessus. J'ai stocké quelques fichiers et répertoires à l'intérieur directory1.

Jetons un coup d'œil au contenu de directory1:

$ ls -ltRF directory1/

Exemple de sortie:

directory1/:

total 7780

drwxrwxr-x 2 sk sk    4096 Oct  2 15:35 dir1/

-rw-rw-r-- 1 sk sk 7779007 Sep 25 16:51 file2

-rw-rw-r-- 1 sk sk  179765 Aug 17 12:51 file1

 

directory1/dir1:

total 140

-rw-rw-r-- 1 sk sk 141729 Aug  6 22:34 file3

Comme vous pouvez le voir, j'ai un dossier appelé dir1et deux autres fichiers à savoir file1et file2à la racine de directory1. Dans le dir1, il y a un autre fichier appelé file3.

Et la directory2réplique n'a aucun contenu.

$ ls -ltRF directory2/

directory2/:

total 0

Synchronisons ces deux répertoires à l'unisson avec la commande:

$ unison directory1/ directory2/

Vous serez invité si vous souhaitez continuer à synchroniser le contenu de directory1avec directory2. Appuyez simplement sur la ENTERtouche. Ensuite, Unison vous demandera de confirmer les fichiers et répertoires à synchroniser. Appuyez sur ENTERou appuyez sur la ftouche pour confirmer les fichiers et dossiers que vous souhaitez synchroniser. Enfin, appuyez yet appuyez sur la ENTERtouche pour procéder à la propagation des mises à jour.

Contacting server...

Looking for changes

Warning: No archive files were found for these roots, whose canonical names are:

        /home/sk/directory1

        /home/sk/directory2

This can happen either

because this is the first time you have synchronized these roots,

or because you have upgraded Unison to a new version with a different

archive format.  

 

Update detection may take a while on this run if the replicas are

large.

 

Unison will assume that the 'last synchronized state' of both replicas

was completely empty.  This means that any files that are different

will be reported as conflicts, and any files that exist only on one

replica will be judged as new and propagated to the other replica.

If the two replicas are identical, then no changes will be reported.

 

If you see this message repeatedly, it may be because one of your machines

is getting its address from DHCP, which is causing its host name to change

between synchronizations.  See the documentation for the UNISONLOCALHOSTNAME

environment variable for advice on how to correct this.

 

Donations to the Unison project are gratefully accepted:

http://www.cis.upenn.edu/~bcpierce/unison

 

Reconciling changestinue.[<spc>] / file1

 

directory1     directory2        

dir      ---->            dir1  [f] f

file     ---->            file1  [f] f

file     ---->            file2  [f] f

 

Proceed with propagating updates? [] y

Propagating updates

 

 

UNISON 2.48.4 started propagating changes at 15:43:29.75 on 02 Oct 2020

[BGN] Copying dir1 from /home/sk/directory1 to /home/sk/directory2

[END] Copying dir1

[BGN] Copying file1 from /home/sk/directory1 to /home/sk/directory2

[END] Copying file1

[BGN] Copying file2 from /home/sk/directory1 to /home/sk/directory2

[END] Copying file2

UNISON 2.48.4 finished propagating changes at 15:43:29.81 on 02 Oct 2020

 

 

Saving synchronizer state

Synchronization complete at 15:43:29  (3 items transferred, 0 skipped, 0 failed)

Synchronisez les répertoires avec Unison à partir de la ligne de commandeSynchronisez les répertoires avec Unison à partir de la ligne de commande

 

Synchronisez les répertoires avec Unison à partir de la ligne de commande

Désormais, tout le contenu de directory1sera répliqué dans directory2. Vous pouvez le vérifier à l'aide de la lscommande:

Répertorier le contenu des répliques à l'unissonRépertorier le contenu des répliques à l'unisson

Répertorier le contenu des répliques à l'unisson

Voir? Le contenu des deux répliques est identique. Comme je l'ai déjà mentionné, les autorisations de fichiers et les numéros d'inode des fichiers et des dossiers sur les deux emplacements sont également synchronisés. Vous pouvez voir que les autorisations et les inodes sont également identiques dans la sortie ci-dessus.

Avez-vous remarqué les marques de flèche dans la sortie lors de la synchronisation des répertoires? Par exemple, vous devriez avoir remarqué les lignes suivantes au milieu de la sortie:

 

directory1     directory2        

dir      ---->            dir1  [f] f

file     ---->            file1  [f] f

file     ---->            file2  [f] f

Les flèches indiquent la direction dans laquelle le changement doit être propagé. Dans notre cas, les flèches pointent de gauche à droite. Signification - le dir1, file1et file2sont propagés à la deuxième réplique ie directory2.

Créez maintenant un nouveau fichier dans la directory2réplique et voyez ce qui se passe.

$ touch directory2/file4

Synchronisez les deux répliques à l'aide de la commande:

$ unison directory1/ directory2/

Vous verrez maintenant qu'une flèche pointe de droite à gauche. Cela signifie que les modifications de la deuxième réplique sont propagées à la première réplique. En d'autres termes, le contenu de directory2est répliqué dans directory1.

Contacting server...

Looking for changes

Reconciling changes

 

directory1     directory2        

         <---- new file   file4  [f] f

 

Proceed with propagating updates? [] y

Propagating updates

 

 

UNISON 2.48.4 started propagating changes at 16:04:08.78 on 02 Oct 2020

[BGN] Copying file4 from /home/sk/directory2 to /home/sk/directory1

[END] Copying file4

UNISON 2.48.4 finished propagating changes at 16:04:08.78 on 02 Oct 2020

 

 

Saving synchronizer state

Synchronization complete at 16:04:08  (1 item transferred, 0 skipped, 0 failed)

Unison reconnaîtra automatiquement les fichiers qui doivent être mis à jour dans les deux répliques. Lorsque vous exécutez Unison pour la première fois, il prend note de l'horodatage de modification, des autorisations, de la propriété et du numéro d'inode de tous les fichiers et dossiers dans les deux emplacements. Sur la base de ces informations, Unison décidera quels fichiers doivent être mis à jour lorsque vous exécutez à nouveau la même commande. Comme indiqué précédemment, toutes les informations seront conservées sous ~/.unisonrépertoire.

Pour le vérifier vous-même, modifiez le contenu d'un fichier existant. Je vais modifier le contenu file4en directory1réplique.

$ echo "Welcome to OSTechNix" > directory1/file4

Maintenant, redémarrez la synchronisation:

$ unison directory1/ directory2/

Cette fois, Unison synchronisera le (s) fichier (s) modifié (s).

Contacting server...

Looking for changes

Reconciling changes

 

directory1     directory2        

changed  ---->            file4  [f] f

 

Proceed with propagating updates? [] y

Propagating updates

 

 

UNISON 2.48.4 started propagating changes at 16:05:27.13 on 02 Oct 2020

[BGN] Updating file file4 from /home/sk/directory1 to /home/sk/directory2

[END] Updating file file4

UNISON 2.48.4 finished propagating changes at 16:05:27.14 on 02 Oct 2020

 

 

Saving synchronizer state

Synchronization complete at 16:05:27  (1 item transferred, 0 skipped, 0 failed)

Comme vous pouvez le voir dans la sortie ci-dessus, Unison a détecté ce qui file4a été modifié dans le premier réplica et l'a synchronisé avec le second réplica.

Si les deux répliques sont modifiées et que leur contenu est différent, les modifications sont en conflit. Dans de tels cas, Unison demandera à l'utilisateur comment propager les mises à jour des deux côtés. Les conflits seront affichés avec les flèches gauche et droite comme ci-dessous.

directory1     directory2        

new file <-?-> new file   file6  []

Si une action par défaut est indiquée par une flèche, appuyez simplement sur la ENTERtouche pour passer au fichier modifié suivant. Si vous voulez faire quelque chose de différent avec ce fichier, vous pouvez appuyer sur "<"ou ">"pour forcer la propagation de la modification de droite à gauche ou de gauche à droite.

directory1     directory2        

new file <==== new file   file6  [] <

Si vous ne souhaitez apporter aucune modification, appuyez simplement sur "/"pour ignorer ce fichier et laissez les deux répliques seules.

1.1. Profils Unison

Unison utilise des profils pour synchroniser les fichiers et les dossiers entre deux répertoires sur la même ou deux machines différentes. Un profil n'est rien d'autre qu'un fichier texte dans lequel nous définissons le chemin réel des répertoires racine et les préférences de chemin qui doivent être synchronisées. Tous les profils seront stockés dans le .unisonrépertoire de votre $HOMErépertoire.

Lorsque vous exécutez Unison pour la première fois, un profil par défaut nommé default.prfest créé sous le ~/.unisonrépertoire. Le profil par défaut n'a aucune préférence définie. Ainsi, tout ce qui est stocké dans une réplique sera synchronisé avec une autre réplique.

Nous pouvons également créer un profil personnalisé avec la liste des préférences de chemin. Cela vous aidera à éviter de synchroniser les deux répliques entières.

En utilisant les profils personnalisés, nous pouvons demander à Unison:

Voyons un exemple.

Créez deux répliques et enregistrez certains fichiers et dossiers dans une réplique et laissez l'autre vide.

$ mkdir ~/directory1

$ mkdir ~/directory2

Ensuite, créez un nouveau profil nommé dir_profile.prf:

$ nano .unison/dir_profile.prf

Définissez les répertoires racine et les chemins des fichiers et répertoires que vous souhaitez synchroniser:

# Roots of the synchronization

root = /home/sk/directory1

root = /home/sk/directory2

 

# Paths to synchronize

path = dir1

path = file2

Les deux racines peuvent être données dans l'un ou l'autre ordre. Unison les triera dans un ordre canonique avant de faire quoi que ce soit d'autre. Si vous ne spécifiez aucun chemin, Unison synchronisera simplement les deux répliques entières, en commençant par la paire de racines donnée. Si une ou plusieurs préférences de chemin sont données, Unison synchronisera uniquement ces chemins et leurs enfants.

Dans l'exemple ci-dessus, j'ai défini le dir1et file2doit être synchronisé avec un autre répertoire racine. Enregistrez et fermez le fichier.

Après avoir créé le profil, démarrez le processus de synchronisation à l'aide de la commande:

$ unison dir_profile.prf

Vous serez invité si vous souhaitez continuer à synchroniser le contenu de directory1avec directory2. Appuyez simplement sur la ENTERtouche, puis appuyez sur la ftouche pour confirmer les chemins à synchroniser. Enfin, appuyez yet appuyez sur la ENTERtouche pour poursuivre la propagation des mises à jour.

Contacting server...

Looking for changes

Warning: No archive files were found for these roots, whose canonical names are:

        /home/sk/directory1

        /home/sk/directory2

This can happen either

because this is the first time you have synchronized these roots,

or because you have upgraded Unison to a new version with a different

archive format.  

 

Update detection may take a while on this run if the replicas are

large.

 

Unison will assume that the 'last synchronized state' of both replicas

was completely empty.  This means that any files that are different

will be reported as conflicts, and any files that exist only on one

replica will be judged as new and propagated to the other replica.

If the two replicas are identical, then no changes will be reported.

 

If you see this message repeatedly, it may be because one of your machines

is getting its address from DHCP, which is causing its host name to change

between synchronizations.  See the documentation for the UNISONLOCALHOSTNAME

environment variable for advice on how to correct this.

 

Donations to the Unison project are gratefully accepted:

http://www.cis.upenn.edu/~bcpierce/unison

 

Reconciling changestinue.[<spc>] | dir1

 

directory1     directory2        

dir      ---->            dir1  [f]

file     ---->            file2  [f]

 

Proceed with propagating updates? [] y

Propagating updates

 

 

UNISON 2.48.4 started propagating changes at 15:42:32.99 on 01 Oct 2020

[BGN] Copying dir1 from /home/sk/directory1 to /home/sk/directory2

[END] Copying dir1

[BGN] Copying file2 from /home/sk/directory1 to /home/sk/directory2

[END] Copying file2

UNISON 2.48.4 finished propagating changes at 15:42:33.04 on 01 Oct 2020

 

Saving synchronizer state

Synchronization complete at 15:42:33  (2 items transferred, 0 skipped, 0 failed)

Synchroniser les fichiers avec Unison à partir de la ligne de commandeSynchroniser les fichiers avec Unison à partir de la ligne de commandeSynchroniser les fichiers avec Unison à partir de la ligne de commande

Maintenant, allez à la deuxième réplique directory2et voyez si le contenu est synchronisé.

1.1. Ignorer les fichiers de la synchronisation

Parfois, vous pouvez ne pas souhaiter synchroniser un fichier spécifique ou un type de fichier spécifique. Si tel est le cas, vous pouvez définir les fichiers à ignorer dans le profil comme ci-dessous.

ignore=Name text.*

ignore=Name .*~

ignore=Name *.pdf

Pour plus d'exemples de profils, reportez-vous ici .

1.2. Synchronisez les fichiers et répertoires locaux avec unison-gtk

Certains d'entre vous peuvent ne pas être à l'aise avec la ligne de commande. Heureusement, Unison dispose d'une interface graphique simple qui permet aux utilisateurs de créer facilement des profils et de synchroniser des fichiers en fonction des profils via une fenêtre graphique.

Assurez-vous que vous avez installé le unison-gtkpackage comme indiqué dans la section d'installation ci-dessus. Lancez unison-gtk à partir du menu ou du lanceur d'applications.

Vous verrez la fenêtre de sélection de profil lors du premier lancement. Si vous avez déjà créé un profil comme décrit, vous le verrez ici.

Fenêtre de sélection du profil UnisonFenêtre de sélection du profil UnisonFenêtre de sélection du profil Unison

Depuis la fenêtre des profils, vous pouvez créer un nouveau profil avec de nouveaux répertoires racine et les chemins à synchroniser. Ou, vous pouvez simplement éditer le profil existant et modifier les répertoires racine ou ajouter de nouveaux fichiers ou changer les chemins à synchroniser.

Modifier les profils UnisonModifier les profils UnisonModifier les profils Unison

Si vous n'avez plus besoin d'un profil, choisissez-le et cliquez sur Supprimer.

Je vais créer un nouveau profil. Pour ce faire, cliquez sur le bouton Ajouter dans la fenêtre de sélection de profil et cliquez sur Suivant .

Créer un nouveau profil dans Unison-gtkCréer un nouveau profil dans Unison-gtkCréer un nouveau profil dans Unison-gtk

Entrez un nom approprié pour votre nouveau profil avec une petite description:

Entrez le nom et la description du profil UnisonEntrez le nom et la description du profil UnisonEntrez le nom et la description du profil Unison

Ensuite, choisissez le type de synchronisation que vous souhaitez effectuer. Puisqu'il s'agit d'une synchronisation entre deux répertoires locaux, j'ai choisi "local" .

Choisissez le type de synchronisation dans UnisonChoisissez le type de synchronisation dans UnisonChoisissez le type de synchronisation dans Unison

Sélectionnez les deux répertoires racine que vous souhaitez synchroniser.

Sélectionnez les répertoires à synchroniserSélectionnez les répertoires à synchroniserSélectionnez les répertoires à synchroniser

Cochez la case suivante si l'un de vos répertoires racine se trouve sur une partition FAT. C'est généralement le cas pour une clé USB.

 

Synchronisation impliquant une partition FATSynchronisation impliquant une partition FAT

Synchronisation impliquant une partition FAT

 

Enfin, cliquez sur Appliquer pour créer le profil.

Créer un profil à l'unissonCréer un profil à l'unissonCréer un profil à l'unisson

Le profil nouvellement créé apparaîtra maintenant dans la fenêtre de sélection de profil. Sélectionnez-le et cliquez sur Ouvrir.

Choisissez le profil unissonChoisissez le profil unissonChoisissez le profil unisson

Le graphique Unison vous montrera maintenant les modifications à effectuer des deux côtés. Tout comme l'interface de ligne de commande Unison, l'action par défaut est également indiquée par une flèche dans l'interface graphique. Comme vous le voyez dans la capture d'écran ci-dessous, les fichiers sont propagés de gauche à droite, c'est-à-dire de la première réplique à la seconde réplique. Si le contenu des répliques n'est pas identique, Unison vous demandera des instructions sur la réplique qui doit remplacer l'autre.

Si vous êtes satisfait des directions de propagation des modifications, cliquez sur Aller dans la barre d'outils ou sélectionnez Synchronisation -> Aller dans la barre de menus.

Synchroniser les fichiers avec l'interface unison-gtkSynchroniser les fichiers avec l'interface unison-gtkSynchroniser les fichiers avec l'interface unison-gtk

Une fois la synchronisation terminée avec succès, vous verrez les coches sous la section État.

La synchronisation est terminée avec succès à l'unissonLa synchronisation est terminée avec succès à l'unissonLa synchronisation est terminée avec succès à l'unisson

2. Synchronisez les fichiers et répertoires stockés sur différents disques sur la même machine

Les fichiers de synchronisation entre deux disques sont exactement les mêmes que ci-dessus. Assurez-vous simplement que vous avez mentionné le chemin correct du répertoire racine dans le lecteur externe.

Vous savez maintenant comment synchroniser des fichiers entre deux répertoires dans le même disque dur et un disque différent sur un système local. La section suivante explique comment synchroniser des fichiers entre deux systèmes différents.

3. Synchronisez les fichiers et répertoires entre les machines locales et distantes

Comme indiqué précédemment, Unison peut synchroniser les fichiers entre les systèmes locaux et distants via une connexion socket directe et via une connexion SSH cryptée. Comme vous le savez déjà, SSH est bien meilleur et plus sécurisé que la méthode socket. Dans le cadre de ce guide, j'utiliserai la méthode SSH pour synchroniser les fichiers.

Assurez-vous d'avoir installé openSSH et Unison sur les deux systèmes . Assurez-vous également que les deux systèmes peuvent communiquer via SSH. Veuillez noter que vos systèmes locaux et distants doivent avoir la même version d'Unison .

Pour vérifier la version d'Unison, exécutez la commande suivante sur votre système local et distant:

$ unison -version

unison version 2.48.4

Étant donné que les fichiers seront synchronisés via SSH, peu importe que le système distant ait unison-gtk ou non. L'interface de ligne de commande Unison est juste suffisante sur une machine distante! Sur votre ordinateur local, vous pouvez utiliser une interface à l'unisson textuelle ou graphique.

3.1. Synchroniser les fichiers et répertoires entre les machines locales et distantes à partir de la ligne de commande

Maintenant, synchronisons le directory1de notre système local vers le directory1système distant en utilisant l'unisson en exécutant la commande suivante:

$ unison directory1/ ssh://ostechnix@192.168.225.52/directory1/

Voici ostechnix@192.168.225.52le nom d'utilisateur et l'adresse IP de mon système distant.

Vous serez invité à entrer le mot de passe de votre utilisateur distant. Appuyez ensuite sur ENTER pour accepter de synchroniser le contenu directory1de la machine locale avec directory1 de la machine distante. Appuyez ensuite sur la ftouche pour confirmer les chemins à synchroniser. Enfin, appuyez yet appuyez sur la ENTERtouche pour poursuivre la propagation des mises à jour.

Contacting server...

ostechnix@192.168.225.52's password:

Connected [//ostechnix//home/sk/directory1 -> //ubuntuserver//home/ostechnix/directory1]

Looking for changes

Warning: No archive files were found for these roots, whose canonical names are:

        /home/sk/directory1

        //ubuntuserver//home/ostechnix/directory1

This can happen either

because this is the first time you have synchronized these roots,

or because you have upgraded Unison to a new version with a different

archive format.  

 

Update detection may take a while on this run if the replicas are

large.

 

Unison will assume that the 'last synchronized state' of both replicas

was completely empty.  This means that any files that are different

will be reported as conflicts, and any files that exist only on one

replica will be judged as new and propagated to the other replica.

If the two replicas are identical, then no changes will be reported.

 

If you see this message repeatedly, it may be because one of your machines

is getting its address from DHCP, which is causing its host name to change

between synchronizations.  See the documentation for the UNISONLOCALHOSTNAME

environment variable for advice on how to correct this.

 

Donations to the Unison project are gratefully accepted:

http://www.cis.upenn.edu/~bcpierce/unison

 

Press return to continue.[<spc>]   Waiting for changes from server

Reconciling changes

 

local          ubuntuserver      

file     ---->            file1  [f] f

file     ---->            file2  [f] f

 

Proceed with propagating updates? [] y

Propagating updates

 

 

UNISON 2.48.4 started propagating changes at 14:49:18.44 on 03 Oct 2020

[BGN] Copying file1 from /home/sk/directory1 to //ubuntuserver//home/ostechnix/directory1

[BGN] Copying file2 from /home/sk/directory1 to //ubuntuserver//home/ostechnix/directory1

[END] Copying file1

[END] Copying file2

UNISON 2.48.4 finished propagating changes at 14:49:18.45 on 03 Oct 2020

 

 

Saving synchronizer state

Synchronization complete at 14:49:18  (2 items transferred, 0 skipped, 0 failed)

Synchronisez les fichiers et les répertoires entre les machines locales et distantes à l'unissonSynchronisez les fichiers et les répertoires entre les machines locales et distantes à l'unisson

Synchronisez les fichiers et répertoires entre les machines locales et distantes à l'aide d'Unison

La commande ci-dessus répliquera le contenu de directory1depuis le système local vers le directory1sur le système distant. Ajoutez maintenant un nouveau fichier ou mettez à jour un fichier existant et réessayez de synchroniser. Vous devriez voir des résultats similaires des deux côtés.

Si vous souhaitez synchroniser le contenu avec un autre emplacement que le répertoire personnel du système distant, vous devez spécifier le chemin absolu du répertoire distant en ajoutant une barre oblique supplémentaire entre le nom d'hôte distant et le début du chemin comme ci-dessous:

$ unison directory1/ ssh://ostechnix@192.168.225.52//sync/the/files/here/

Si vous ne souhaitez pas synchroniser tout le répertoire, créez simplement un profil personnalisé et définissez les chemins à synchroniser comme décrit dans la section intitulée 1.1. Profils Unison ci-dessus.

3.2. Synchroniser les fichiers et les répertoires entre les machines locales et distantes à l'aide d'unison-gtk

Lancez l'application Unison-gtk à partir du menu ou du lanceur. Cliquez sur le bouton Ajouter dans la fenêtre de sélection de profil pour créer un nouveau profil.

Ajouter un nouveau profil unissonAjouter un nouveau profil unisson

Ajouter un nouveau profil unisson

Cliquez sur Transférer.

 

Assistant de création de profil Unison

 

Entrez le nom du profil Unison et sa description, puis cliquez sur "Suivant".

Assistant de création de profil UnisonAssistant de création de profil Unison

 

Voici l'étape importante. Choisissez "ssh" dans la liste déroulante Type de synchronisation. Entrez l'adresse IP ou le nom d'hôte du système distant et le nom d'utilisateur distant. Cochez également la case "Activer la compression" pour améliorer les performances du transfert de données.

 

 

Choisissez les emplacements des répertoires local et distant que vous souhaitez synchroniser.

 

 

Si l'un de vos répertoires se trouve sur une partition FAT, vous devez cocher cette option. C'est généralement le cas pour les lecteurs USB.

 

 

Cliquez sur "Appliquer" pour terminer la création du profil.

 

 

Le profil nouvellement créé apparaîtra alors dans la fenêtre de sélection du profil. Sélectionnez le profil et cliquez sur Ouvrir.

 

 

Il vous sera demandé d'entrer le mot de passe de votre utilisateur distant. Saisissez le mot de passe et cliquez sur OK.

 

 

Après avoir saisi le mot de passe, Unison énumérera les changements à propager du local au distant. L'action par défaut est indiquée par une flèche. Si vous ne voulez pas de l'action par défaut, appuyez sur les options "de gauche à droite" ou "de droite à gauche" dans la barre de menu pour indiquer quelle réplique doit prévaloir sur l'autre. Enfin, cliquez sur "Go to replicate" (aller à la réplique).

 

 

Unison va maintenant répliquer l'intégralité du contenu du répertoire local avec le répertoire distant. Une fois la synchronisation terminée, vous verrez la coche dans la section Statut.

 

 

Vous pouvez vérifier le contenu des fichiers et des répertoires sur les deux emplacements.

La méthode ci-dessus permettra de synchroniser l'ensemble du contenu de la réplique locale avec la réplique distante. Si vous souhaitez synchroniser des fichiers ou des répertoires spécifiques, créez un profil personnalisé et définissez les chemins de synchronisation comme décrit dans la section intitulée 1.1. Profils Unison ci-dessus.

 

3.3. Configuration de l'authentification basée sur une clé SSH (Facultatif)

 

Chaque fois que vous synchronisez des fichiers entre deux systèmes différents via SSH, vous devez entrer le mot de passe de l'utilisateur distant. Si vous ne souhaitez pas saisir le mot de passe à chaque fois, vous pouvez configurer l'authentification SSH sans mot de passe comme décrit dans le lien ci-dessous. Ne générez pas de paire de clés SSH avec une phrase de passe. Sinon, vous devez toujours entrer le mot de passe lors de la synchronisation des fichiers entre les systèmes.

3.4. Configuration du travail cron (facultatif)

Nous pouvons synchroniser automatiquement les fichiers à un intervalle de temps spécifique à l'aide de tâches cron.

Par exemple, ajoutez l'entrée suivante dans votre crontabfichier pour exécuter la synchronisation  tous les jours  (elle s'exécutera à 00h00):

0 0 * * * unison directory1/ ssh://ostechnix@192.168.225.52//home/ostechnix/directory1/

Pour plus de détails sur la configuration des tâches cron, reportez-vous au guide suivant:

Obtenir de l'aide

Je n'ai couvert que les bases. C'est juste assez pour configurer une synchronisation fonctionnelle sur votre système Linux. Si vous souhaitez en savoir plus sur l'utilisation avancée, veuillez consulter la section d'aide Unison.

Pour afficher la page de documentation locale, exécutez:

$ unison -doc topics

Vous verrez la liste des rubriques disponibles dans la documentation locale.

Documentation topics:

          about About Unison

         people People

          lists Mailing Lists and Bug Reporting

         status Development Status

        copying Copying

            ack Acknowledgements

        install Installation

       tutorial Tutorial

         basics Basic Concepts

       failures Invariants

        running Running Unison

            ssh Installing Ssh

           news Changes in Version 2.48.4

 

Type "unison -doc <topic>" for detailed information about <topic>

or "unison -doc all" for the whole manual

Pour afficher les informations détaillées sur un sujet, par exemple le didacticiel unison , exécutez:

$ unison -doc tutorial

Vous pouvez également afficher l'intégralité du manuel Unison à l'aide de la commande suivante:

$ unison -doc all

J'ai également joint les liens officiels d'Unison à la fin de ce guide. Parcourez la documentation et familiarisez-vous avec le fonctionnement d'Unison. Une fois que vous en avez suffisamment appris, essayez de configurer la synchronisation locale et / ou à distance avec Unison en production.

Conclusion

Unison vous permet de garder facilement et efficacement deux systèmes ou plus complètement synchronisés les uns avec les autres, peu importe ce qui est changé sur l'un des systèmes. Si vous souhaitez conserver deux instances d'une collection de fichiers et de répertoires sur deux systèmes à jour et identiques, Unison est un bon choix! 

Ressources:

Unison Website

Unison Official Documentation

Unison GitHub Repository